<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <h1>首页</h1>
    <h2>学生信息 <button id="btn">发起请求</button></h2>
    <table border="1">
        <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>性别</th>
            <th>年龄</th>
            <th>专业</th>
        </tr>
        <tbody id="tbody">

        </tbody>
        <!-- <tr>
            <td>9512101</td>
            <td>李勇</td>
            <td>男</td>
            <td>19</td>
            <td>计算机系</td>
        </tr>
        <tr>
            <td>9512101</td>
            <td>李勇</td>
            <td>男</td>
            <td>19</td>
            <td>计算机系</td>
        </tr>
        <tr>
            <td>9512101</td>
            <td>李勇</td>
            <td>男</td>
            <td>19</td>
            <td>计算机系</td>
        </tr> -->

    </table>
</body>

</html>
<script>
    btn.onclick = function () {

        // 1、实例化ajax对象
        let xhr = new XMLHttpRequest()
        // console.log(xhr.readyState);//0


        // 2、配置请求的参数
        // xhr.open(请求方法,请求地址)
        xhr.open("get", "http://localhost:3000/students")
        // console.log(xhr.readyState);//1


        // 3、发送请求
        xhr.send()
        // console.log(xhr.readyState);//1


        // 4、监听ajax请求的状态 readyState
        // onreadystatechange  监听 ajax准备的状态  改变
        xhr.onreadystatechange = function () {
            // console.log(xhr.readyState);//234



            // 5、ajax请求完成之后（状态码4），http请求成功（状态码为200）此才能接收到数据
            if (xhr.readyState == 4 && xhr.status == 200) {

                // console.log(xhr.responseText);//响应文本

                // 6、使用JSON.parse处理数据，把数据和html结合，然后渲染
                let students = JSON.parse(xhr.responseText)
                console.log(students);

                let str = ""

                students.result.forEach(value => {
                    str += `<tr>
                        <td>${value.xh}</td>
                        <td>${value.xm}</td>
                        <td>${value.sex}</td>
                        <td>${value.age}</td>
                        <td>${value.szx}</td>
                    </tr>`
                });

                // console.log(str);

                tbody.innerHTML=str



            }

            if (xhr.readyState == 4 && xhr.status != 200) {
                console.log("请求失败");
            }
        }



    }



</script>
<!-- 
- 0：请求未初始化，还没有调用open
- 1：请求已经建立，但是还没有发送send 
- 2：请求已经发送 
- 3：请求正在处理中，通常响应中已经有部分数据可以用了 
- 4：响应已经完成，可以获取并使用服务器的响应  -->